/*
 * Copyright (C) 2007 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.butterfly.vv;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import com.beem.project.beem.R;
import com.teleca.jamendo.api.Contact;
import com.teleca.jamendo.api.VVImage;
import com.teleca.jamendo.dialog.AlbumLoadingDialog;
import com.teleca.jamendo.dialog.FriendAlbumLoadingDialog;

import android.app.Activity;
import android.app.ExpandableListActivity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ExpandableListView.ExpandableListContextMenuInfo;


/**
 * Demonstrates expandable lists using a custom {@link ExpandableListAdapter}
 * from {@link BaseExpandableListAdapter}.
 */
public class FriendExpandableListGrid extends ExpandableListActivity {

    ExpandableListAdapter mAdapter;
    ExpandableListView expandableListView;
    Contact mContact;
    
    public static void launch(Activity c, Contact contact,String myjid){
		new FriendAlbumLoadingDialog(c,R.string.artist_loading, R.string.artist_fail,contact,myjid).execute(contact.getmID());
	}

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        mContact =  (Contact) getIntent().getSerializableExtra("fcontact");
//        mContact =  (Contact) getIntent().getParcelableExtra("fcontact");
        ArrayList<Map<String, List<VVImage>>> vvAlbums = (ArrayList<Map<String, List<VVImage>>>) getIntent().getSerializableExtra("vvAlbums");
       // sortImageByDate(vvAlbums);
        
        // Set up our adapter
       // mAdapter = new MyExpandableListAdapter();
        
//		LayoutInflater inflater = LayoutInflater.from(this);
//		//View item1 = (View) inflater.inflate(android.R.layout.simple_expandable_list_item_1, null);
//		View item1 = (View) inflater.inflate(R.layout.f_i_expandablelist, null);
// 
//        
//        setContentView(item1);
       // mAdapter = new FriendImagesExpandablelistAdapter(this);//20121218
//       1219 mAdapter = new FriendImagesExpandablelistAdapter(this,mContact);
        Log.i("VV", mContact.getmID()+"---"+vvAlbums.size()+"..."+vvAlbums.toString());
        mAdapter = new FriendImagesExpandablelistAdapter(this,mContact,vvAlbums);
//        expandableListView = (ExpandableListView) item1.findViewById(R.id.appListGridEX);
//        expandableListView.setAdapter(mAdapter);
        setListAdapter(mAdapter);
        //registerForContextMenu(getExpandableListView());
    }

	private void sortImageByDate(ArrayList<Map<String, List<VVImage>>> vvAlbums) {
		for (Iterator iterator = vvAlbums.iterator(); iterator.hasNext();) {
			Map<String, List<VVImage>> dateMap = (Map<String, List<VVImage>>) iterator
					.next();
			for (Iterator iterator3 = dateMap.keySet().iterator(); iterator3
					.hasNext();) {
				String type = (String) iterator3.next();
				Log.i("tag", getClass().getName()+" pp "+type);
				;
				for (Iterator iterator2 = dateMap.get(type).iterator(); iterator2
						.hasNext();) {
					VVImage image = (VVImage) iterator2.next();
					Log.i("tag", getClass().getName()+" image "+image.getName());
				}
			}
		}
	}


    /**
     * A simple adapter which maintains an ArrayList of photo resource Ids. 
     * Each photo is displayed as an image. This adapter supports clearing the
     * list of photos and adding a new photo.
     *
     */
    public class MyExpandableListAdapter extends BaseExpandableListAdapter {
        // Sample data set.  children[i] contains the children (String[]) for groups[i].
        private String[] groups = { "People Names", "Dog Names", "Cat Names", "Fish Names" };
        private String[][] children = {
                { "Arnold", "Barry", "Chuck", "David" },
                { "Ace", "Bandit", "Cha-Cha", "Deuce" },
                { "Fluffy", "Snuggles" },
                { "Goldy", "Bubbles fff" }
        };
        
        public Object getChild(int groupPosition, int childPosition) {
            return children[groupPosition][childPosition];
        }

        public long getChildId(int groupPosition, int childPosition) {
            return childPosition;
        }

        public int getChildrenCount(int groupPosition) {
            return children[groupPosition].length;
        }

        public TextView getGenericView() {
            // Layout parameters for the ExpandableListView
            AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
                    ViewGroup.LayoutParams.MATCH_PARENT, 80);

            TextView textView = new TextView(FriendExpandableListGrid.this);
            textView.setLayoutParams(lp);
            // Center the text vertically
            textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
            // Set the text starting position
            textView.setPadding(36, 0, 0, 0);
            return textView;
        }
        
        public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
                View convertView, ViewGroup parent) {
            TextView textView = getGenericView();
            textView.setText(getChild(groupPosition, childPosition).toString());
            return textView;
        }

        public Object getGroup(int groupPosition) {
            return groups[groupPosition];
        }

        public int getGroupCount() {
            return groups.length;
        }

        public long getGroupId(int groupPosition) {
            return groupPosition;
        }

        public View getGroupView(int groupPosition, boolean isExpanded, View convertView,
                ViewGroup parent) {
            TextView textView = getGenericView();
            textView.setText(getGroup(groupPosition).toString());
            return textView;
        }

        public boolean isChildSelectable(int groupPosition, int childPosition) {
            return true;
        }

        public boolean hasStableIds() {
            return true;
        }

    }
}
